﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using skags.Models;

namespace skags.Controllers
{
    /* Rök/stjórn klasi sem heldur utan um virkni tengda fréttir
     * Klasinn inniheldur 3 föll hvers nöfn hafa samsvörun í aspx skrám í View folder
     Virkni fallanna leiðir til html renderingar í gegnum View fall */
    [HandleError]
    [LogError]
    public class NewsController : Controller
    {
        /* GET: /News/ - get fyrirspurn sem endar á /News kemur inn til servers
         * fall skilar af sér View
         */
        public ActionResult Index(int id = 30) // nafn fallsins vísun i index.aspx skrá í Views
        {
            // kallað á tilfelli af NewsRepository - tenging við gagnagrunn
            var rep = new NewsRepository();
            // gögn ur gagnagrunnsfyrirspurn sett í breytu "allsNewsAndCat"
            var allNewsAndCat = rep.GetAll(id);
            // breytan send i Viewfall í "View" hluta MVC og það sprautar gögn breytunnar inn i index.aspx
            return View(allNewsAndCat);
        }

        /* GET: /News/ViewItem/5 */
        public ActionResult ViewItem(int id) // nafn fallsins visar i ViewIndex.aspx skrá í Views
        {
            try
            {
                var rep = new NewsRepository();
                var urep = new UserRepository();

                var newsItem = rep.GetNewsByID(id);
                if (newsItem == null)
                    throw (new Exception("Frétt fannst ekki"));

                rep.UpdateReadCount(newsItem);
                ViewData["CreatorName"] = urep.GetNameByHashID(newsItem.CreatorID);
                ViewData["CreatorID"] = urep.GetIDByHashID(newsItem.CreatorID);

                return View(newsItem);
            }
            catch(Exception ex)
            {
                throw new Exception("Þetta er horfið.. eða var aldrei til");
            }
        }

        /* GET: /News/Category/5 - Skilar fréttum eftir flokkum */
        public ActionResult Category(int id)
        {
            var rep = new NewsRepository();

            var allNewsAndCat = rep.GetNewsByCategoryID(id);

            return View(allNewsAndCat);
        }
    }
}
